package Solutions;

public class Solution15 {
    public static void main(String[] args) {
        Solution015 solution015=new Solution015();
        boolean b = solution015.oneEditAway("qwer", "wer");
        System.out.printf(String.valueOf(b));
    }
}
class Solution015 {
    public boolean oneEditAway(String first, String second) {
        //首先判断两个字符长度的差值
        if (Math.abs(first.length() - second.length()) > 1) {
            return false;
        }
        //当两个字符长度相等时，判断是否有不相同的字符的个数
        else if (first.length() == second.length()) {
            int n = 0;//不相同的个数
            for (int i = 0; i < first.length(); i++) {
                if (first.charAt(i) != second.charAt(i)) {
                    n++;
                }
            }
            if (n > 1) return false;
            return true;
        } else {
            //当长度相差1时，判断是否通过一次添加或减少就能使两个字符串相等
            int index1 = 0;//第一个字符的下标
            int index2 = 0;//第二个字符的下标
            while (index1 < first.length() && index2 < second.length()) {
                //还需要if语句判断两个字符串的长度，不然index2向后移动index1的值一直是0 比如first：qwer    second：wer
                if (second.length() > first.length()) {
                    if (first.charAt(index1) == second.charAt(index2)) {
                        index1++;
                    }
                    index2++;
                    if (Math.abs(index1 - index2) > 1) {
                        return false;
                    }
                } else {
                    if (first.charAt(index1) == second.charAt(index2)) {
                        index2++;
                    }
                    index1++;
                    if (Math.abs(index1 - index2) > 1) {
                        return false;
                    }
                }
            }
            return true;
        }
    }
}